package modelo.servicio;

import java.util.ArrayList;
import modelo.bd.dao.ReporteDAO;
import modelo.bd.exception.DAOException;

public class Reportes {

    private static Reportes instancia;
    private ReporteDAO dao;

    public static Reportes instancia() {
        if (instancia == null) {
            instancia = new Reportes();
        }
        return instancia;
    }

    private Reportes() {
        this.dao = new ReporteDAO();
    }

    public ArrayList<String[]> obtener(String usuario, String cia, int cliente,
            String serieFact, int numeroFact, String estatus, String desde, String hasta) throws DAOException {
        return dao.selectReporte(usuario, cia, cliente, serieFact, numeroFact, estatus, desde, hasta);
    }

    public String[] obtener(String usuario, String cia, String serie, int numero) {
        String condicion = "cuba_cmpn_clave = '" + cia + "'\n"
                + "       AND pain_cuba_cuenta = cuba_cuenta\n"
                + "       AND EXISTS\n"
                + "              (SELECT 'X'\n"
                + "               FROM scc_usuarios_perfil\n"
                + "               WHERE uspe_clave = UPPER('" + usuario + "') "
                + "               AND uspe_norm_rest = 'N'\n"
                + "               UNION\n"
                + "               SELECT 'X'\n"
                + "               FROM scc_clientes_usuario\n"
                + "               WHERE     clus_uspe_clave = UPPER('" + usuario + "')\n"
                + "               AND clus_clnt_numero = pain_clnt_numero)\n"
                + "       AND pain_serie = '" + serie + "'\n"
                + "       AND pain_numero = " + numero + "\n"
                + "       AND clnt_numero = pain_clnt_numero\n"
                + "       AND pago_pain_serie(+) = pain_serie\n"
                + "       AND pago_pain_numero(+) = pain_numero\n"
                + "       AND peci_anio(+) = pago_peci_anio_gen\n"
                + "       AND peci_tipo(+) = pago_peci_tipo_gen\n"
                + "       AND peci_numero(+) = pago_peci_numero_gen";

        try {
            return dao.selectWhere(condicion).get(0);
        } catch (Exception e) {
            return null;
        }
    }

    public String generarReporte(String nombreRepo, String parametros, String login, String tipoRepo) {
        try {
            String regreso = dao.generar(nombreRepo, parametros, login, tipoRepo);
            return regreso;
        } catch (DAOException ex) {
            return null;
        }
    }

    public String obtenerComando(String nombreRep, String parametros, String usuario) {
        return dao.obtenerComandoSQR(nombreRep, parametros, usuario);
    }
}
